package com.upeoe.shiro.chapter5.service;

import com.upeoe.shiro.chapter5.entity.User;

import java.util.Set;

/**
 * @author ven_hxz
 * @create 2016-07-05 上午9:50
 */
public interface UserService {
    /**
     * 创建用户
     *
     * @param user 用户对象
     * @return 创建后的用户对象
     */
    User createUser(User user);

    /**
     * 修改密码
     *
     * @param userId      用户ID
     * @param newPassword 新密码
     */
    void changePassword(Long userId, String newPassword);

    /**
     * 添加 用户-角色 关系
     *
     * @param userId  用户ID
     * @param roleIds 角色IDs
     */
    void addRelationRoles(Long userId, Long... roleIds);

    /**
     * 移除 用户-角色 关系
     *
     * @param userId  用户ID
     * @param roleIds 角色IDs
     */
    void removeRelationRoles(Long userId, Long... roleIds);

    /**
     * 根据用户名查找用户
     *
     * @param username 用户名
     * @return 用户对象
     */
    User findByUsername(String username);

    /**
     * 根据用户名查找其角色
     *
     * @param username 用户名
     * @return 所拥有的角色
     */
    Set<String> findRolesByUsername(String username);

    /**
     * 根据用户名查找其权限
     *
     * @param username 用户名
     * @return 所拥有的权限
     */
    Set<String> findPermissionsByUsername(String username);
}
